/*
 * pruebaBSharp.h
 *
 *  Created on: Nov 5, 2009
 *      Author: guest
 */

#ifndef PRUEBABSHARP_H_
#define PRUEBABSHARP_H_

#include "../IndiceBSharp.h"
#include "ClaveChar.h"
#include "../DatoBSharp.h"
#include "../BloqueBSharp.h"

void pruebaInsertarClave() {

	Toolkit::IndiceBSharp indice(35, "test/archivos/indiceB#/", "indice",
			Toolkit::BINARIO);

	Toolkit::ClaveChar clave('A');
	indice.insertar(clave, 55);

	Toolkit::ClaveChar clave3('F');
	indice.insertar(clave3, 22);

	Toolkit::ClaveChar clave4('H');
	indice.insertar(clave4, 12);

	Toolkit::ClaveChar clave5('L');
	indice.insertar(clave5, 78);

	Toolkit::ClaveChar clave6('B');
	indice.insertar(clave6, 12);

	Toolkit::ClaveChar clave7('U');
	indice.insertar(clave7, 1);

	Toolkit::ClaveChar clave8('J');
	indice.insertar(clave8, 66);

	Toolkit::ClaveChar clave11('K');
	indice.insertar(clave11, 44);

	Toolkit::ClaveChar clave9('T');
	indice.insertar(clave9, 54);

	Toolkit::ClaveChar clave10('C'); //Lo que hace aca es dudoso
	indice.insertar(clave10, 44);

	Toolkit::ClaveChar clave12('W');
	indice.insertar(clave12, 44);

	indice.eliminar(clave5);
	indice.eliminar(clave9);

	unsigned long int posicionLeida = 0;
	indice.buscar(clave3, posicionLeida);
	cout << posicionLeida << endl;

	posicionLeida = 0;
	indice.buscar(clave12, posicionLeida);
	cout << posicionLeida << endl;

}

void pruebaBSharpSiguiente() {

	Toolkit::IndiceBSharp indice(30, "test/archivos/indiceB#/", "indice",
			Toolkit::TEXTO);

	Toolkit::ClaveChar clave('a');
	indice.insertar(clave, 55);

	Toolkit::ClaveChar clave3('c');
	indice.insertar(clave3, 22);

	Toolkit::ClaveChar clave5('e');
	indice.insertar(clave5, 78);

	Toolkit::ClaveChar clave12('l');
	indice.insertar(clave12, 47);

	Toolkit::ClaveChar clave6('f');
	indice.insertar(clave6, 12);

	Toolkit::ClaveChar clave7('g');
	indice.insertar(clave7, 1);

	Toolkit::ClaveChar clave16('p');
	indice.insertar(clave16, 54);

	Toolkit::ClaveChar clave8('h');
	indice.insertar(clave8, 66);

	Toolkit::ClaveChar clave9('i');
	indice.insertar(clave9, 44);

	Toolkit::ClaveChar clave2('b');
	indice.insertar(clave2, 55);

	Toolkit::ClaveChar clave10('j');
	indice.insertar(clave10, 54);

	Toolkit::ClaveChar clave11('k');
	indice.insertar(clave11, 46);

	Toolkit::ClaveChar clave25('x');
	indice.insertar(clave25, 19);

	Toolkit::ClaveChar clave13('m');
	indice.insertar(clave13, 48);

	Toolkit::ClaveChar clave14('n');
	indice.insertar(clave14, 64);

	Toolkit::ClaveChar clave18('r');
	indice.insertar(clave18, 74);

	Toolkit::ClaveChar clave15('o');
	indice.insertar(clave15, 14);

	Toolkit::ClaveChar clave17('q');
	indice.insertar(clave17, 14);

	Toolkit::ClaveChar clave19('s');
	indice.insertar(clave19, 94);

	Toolkit::ClaveChar clave20('t');
	indice.insertar(clave20, 44);

	Toolkit::ClaveChar clave26('y');
	indice.insertar(clave26, 22);

	Toolkit::ClaveChar clave22('u');
	indice.insertar(clave22, 11);

	Toolkit::ClaveChar clave4('d');
	indice.insertar(clave4, 12);

	Toolkit::ClaveChar clave23('v');
	indice.insertar(clave23, 12);

	Toolkit::ClaveChar clave24('w');
	indice.insertar(clave24, 13);

	Toolkit::ClaveChar clave27('z');
	indice.insertar(clave27, 45);

	Toolkit::IndiceBSharp* indiceBSharp = (Toolkit::IndiceBSharp*) (&indice);

	indiceBSharp->imprimirArbol();

	Toolkit::Clave* claveSiguiente = NULL;

	indiceBSharp->getSiguienteClave(clave, claveSiguiente);
	cout << (*(Toolkit::ClaveChar*) claveSiguiente).getCaracter() << endl;

	for (int i = 0; i < 27; i++) {

		indiceBSharp->getSiguienteClave((*claveSiguiente), claveSiguiente);
		cout << (*(Toolkit::ClaveChar*) claveSiguiente).getCaracter() << endl;

	}

}

#endif /* PRUEBABSHARP_H_ */
